Next: Other Clauses, Previous: Iteration Clauses, Up: Loop Facility [Contents][Index]
These clauses cause the loop to accumulate information about
the specified Lisp form. The accumulated result is
returned from the loop unless overridden, say, by a
return clause.
collect formThis clause collects the values of form into a
list. Several examples of collect appear
elsewhere in this manual.
The word collecting is a synonym for
collect, and likewise for the other accumulation
clauses.
append formThis clause collects lists of values into a result list
using append.
nconc formThis clause collects lists of values into a result list by destructively modifying the lists rather than copying them.
concat formThis clause concatenates the values of the specified form into a string. (It and the following clause are extensions to standard Common Lisp.)
vconcat formThis clause concatenates the values of the specified form into a vector.
count formThis clause counts the number of times the specified
form evaluates to a non-nil
value.
sum formThis clause accumulates the sum of the values of the specified form, which must evaluate to a number.
maximize formThis clause accumulates the maximum value of the specified
form, which must evaluate to a number. The return
value is undefined if maximize is executed zero
times.
minimize formThis clause accumulates the minimum value of the specified form.
Accumulation clauses can be followed by ‘into
var’ to cause the data to be collected
into variable var (which is automatically
let-bound during the loop) rather than an unnamed
temporary variable. Also, into accumulations do not
automatically imply a return value. The loop must use some
explicit mechanism, such as finally return, to
return the accumulated result.
It is valid for several accumulation clauses of the same type to accumulate into the same place. From Steele:
(cl-loop for name in '(fred sue alice joe june)
for kids in '((bob ken) () () (kris sunshine) ())
collect name
append kids)
⇒ (fred bob ken sue alice joe kris sunshine june)
Next: Other Clauses, Previous: Iteration Clauses, Up: Loop Facility [Contents][Index]